Spark 通用的性能配置方法:内存和CPU的配置

您所在的位置:网站首页 spark 参数设置 Spark 通用的性能配置方法:内存和CPU的配置

Spark 通用的性能配置方法:内存和CPU的配置

2023-05-10 17:30| 来源: 网络整理| 查看: 265

前言

本文主要介绍关于通过配置Spark任务运行时的内存和CPU(Vcore)来提升Spark性能的方法。通过配置内存和CPU(Vcore)是比较基础、通用的方法。本文出现的Demo以X-Pack Spark数据工作台为背景介绍,数据工作台的详细介绍请参考:数据工作台。

提交Spark任务的参数

提交Spark任务时需要提供如下的参数。

--class org.apache.spark.examples.SparkPi --driver-memory 2G --driver-cores 1 --executor-cores 2 --executor-memory 8G --num-executors 3 --name spark-pi ...

其中下面的参数都是和此次spark任务执行的性能相关。

--driver-memory 2G //分配给Driver的内存。 --driver-cores 1 // 分配给Driver的Vcore。 --executor-cores 2 //分配给Executor的Vcore。 --executor-memory 8G //分配给Executor的内存。 --num-executors 3 //分配的Executor的个数。

这些配置会影响spark任务执行的并行度、可用的Vcore和内存,从而影响执行的性能。下面分别看下如何配置这些参数。

并行度

按照上面的配置,此次spark任务的运行并行度为:--executor-cores的值 --num-executors的值,即23=6;也就是说同时最多会有6个task同时执行。假设此次任务60个task,每个task执行时间为1秒,则此任务运行时间为:60/6*1=10秒;先把--executor-cores提升为3,--num-executors提升为10,则此任务运行时间为:60/30*1=2秒。所以增加并行度是提升性能比较常用和直接的方法。

Executor的资源配置

--executor-cores一般设置为2~4比较合适,一般通过和--num-executors组合来提升spark任务的并行度。--executor-memory内存的配置一般和--executor-cores有一定的比例关系,比例常用的访问为1:2 到1:4之间。可以根据task运行过程GC的情况适当调整。Task运行时的GC情况可以通过Spark Job UI查看,如下图:Snip20190708_3其中Duration为task运行的时间,GC Time为task运行的Gc 时间。如果GC时间较长,可以适当增加--executor-memory的值或者减少--executor-cores的值(如果资源不足的话)

Driver的资源配置

--driver-memory和--driver-cores一般设置比较少,2G和1cores也基本共用。但是如果有算子把数据都拉倒Driver上去处理,需要增加--driver-memory的值,不过也建议这么做,因为这样最增加Driver的压力。如果

结束语

本文主要列出最基本的方法,Spark性能的调优时可以结合运行时Spark Job UI 查看每个任务的运行状态进行调优。其他调优方法和参数会陆续推出。Spark详细配置请参考:Spark Configuration。X-Pack Spark介绍请参考:Spark 基本介绍。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3